package com.zkflzl.mianshi.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @Author：zhangke
 * @Date：2024/5/30
 */
@Repeatable(FrequencyControlContainer.class)
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FrequencyControl {
    /**
     * 锁前缀
     *
     * @return
     */
    String prefix() default "";

    /**
     * 支持spel取值
     *
     * @return
     */
    String spel() default "";

    /**
     * 时间范围
     *
     * @return
     */
    long time();

    /**
     * 次数
     *
     * @return
     */
    long count();

    /**
     * 频控纬度
     *
     * @return
     */
    Target target();

    /**
     * 时间单位
     *
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 频控纬度
     */
    enum Target {
        PUBLIC;
    }
}
